#include<stdio.h>

#define N 100

void InputArray(int a[N][N], int n);

int IsParity(int a[N][N], int n);

int main(void) {
    int a[N][N];
    int i, j, n;
    printf("输入方阵的阶：");
    scanf("%d", &n);

    printf("输入方阵：\n");
    InputArray(a, n);
    printf("方阵是否为偶数矩阵：%s\n", IsParity(a, n) ? "yes" : "no");
}

int IsParity(int a[N][N], int n) {
    if (n == 0) {
        return 1; // 空矩阵的所有行和列的和都是 0，0 是偶数
    }

    int sum = 0;

    // 判断各行的和是否偶数
    for (int i = 0; i < n; i++) {
        sum = 0; // 重置 sum
        for (int j = 0; j < n; j++) {
            sum += a[i][j];
        }
        if (sum % 2 != 0) {
            return 0;
        }
    }

    // 判断各列的和是否偶数
    for (int j = 0; j < n; j++) {
        sum = 0; // 重置 sum
        for (int i = 0; i < n; i++) {
            sum += a[i][j];
        }
        if (sum % 2 != 0) {
            return 0;
        }
    }

    return 1;
}

//读入m行n列的矩阵存入数组a
void InputArray(int a[N][N],  int n) {
    int i, j;
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("请输入第%d行第%d列的元素：\n", i + 1, j + 1);
            scanf("%d", &a[i][j]);
        }
    }
}